package com.neouton.crm.product.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.neouton.common.entity.ActivitiVO;
import com.neouton.crm.approval.entity.ApprovalVO;
import com.neouton.crm.entity.SysUserEntity;
import com.neouton.crm.pm.entity.PurchaseOrderVO;
import com.neouton.crm.product.entity.ProductInfoVO;
import com.neouton.crm.supplier.entity.SupplierVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;


/**
 * @Author gaolin
 * @Date 2022/8/30 15:43
 * @Version 1.0
 */
@Mapper
public interface ProductInfoMapper {

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    IPage<ProductInfoVO> queryProductsByPage(@Param("page") IPage page, @Param("vo") ProductInfoVO entity);

    /**
     * 多条件查询全部信息
     *
     * @param entity
     * @return
     */
    List<ProductInfoVO> queryAllProducts(@Param("vo") ProductInfoVO entity);

    /**
     * 采购单查询数据
     *
     * @param entity
     * @return
     */
    List<ProductInfoVO> queryAllProductsForPur(@Param("vo") ProductInfoVO entity);

    /**
     * 数据保存
     * @param entity
     */
    Boolean saveProductInfo (@Param("vo") ProductInfoVO entity);

    /**
     * 数据保存
     * @param entity
     */
    Boolean updateProductInfo (@Param("vo") ProductInfoVO entity);

    List<SupplierVO> querySuppliers();

    List<SupplierVO> queryAllSuppliers();

    Boolean backProductInfoData(@Param("backUserId")Integer backUserId,@Param("productId")Integer productId);


    List<ProductInfoVO>  querProductApprovalByWorkId(@Param("workId")Integer workId);

    ProductInfoVO querProductApprovalByProductId(@Param("productId")Integer ID);

    /**
     * 更具工作流ID获取产品列表
     * @param approvalId
     * @return
     */
    List<ProductInfoVO> queryTodoProductsByApprovalId(Integer approvalId);


    /**
     * 更具工作流ID获取产品列表
     * @param approvalId
     * @return
     */
    List<ProductInfoVO> queryHistoryProductsByApprovalId(Integer approvalId);

    /**
     * 批量保存product
     */
    Boolean insertProducts(@Param("productList")List<ProductInfoVO> productInfo,
                           @Param("approvalId")Integer approvalId,
                           @Param("supperId")Integer supperId,
                           @Param("isOneFinger")Integer isOneFinger);

    /**
     * 更新启用、禁用状态
     * @param productInfo
     * @return
     */
    Boolean updateProductState(@Param("vo")ProductInfoVO productInfo);

    /**
     * 更新启用、禁用状态
     * @param productInfo
     * @return
     */
    Boolean updateProductStateByApprovalId(@Param("vo") ApprovalVO approvalVO);

    /**
     * 如审批驳回则删除导入产品
     * @return
     */
    Boolean deleteProductByApprovalId(Integer approvalId);


    /**
     * 备份导入数据
     */
    Boolean backProductInfoDataByApprovalId(Integer approvalId);


    /**
     * 依据审批ID修改产品数据状态
     */
    Boolean updateProductStatusByApprovalId(@Param("status") Integer status,@Param("approvalId") Integer approvalId);

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    IPage<ProductInfoVO> queryApprovalProductByPage(@Param("page") IPage page,
                                                  @Param("vo") ProductInfoVO entity,
                                                  @Param("activitis") List<ActivitiVO> activitiVOS);

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    IPage<ProductInfoVO> queryApprovalProductDoneByPage(@Param("page") IPage page,
                                                      @Param("vo") ProductInfoVO entity);

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    IPage<ProductInfoVO> queryApprovalProductRecordByPage(@Param("page") IPage page,
                                                        @Param("vo") ProductInfoVO entity,
                                                        @Param("userList") List<SysUserEntity> userList);
}
